package com.rookie.data.generate.constant.annotation;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 文本模板注解
 *
 * @author rookie
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface StringTemplate {

    /**
     * 文本模板，可以用占位符
     * 具体可参照 String.format
     *
     * @return 文本模板
     */
    String value();

    /**
     * @return 填充的数据类型，仅支持 int、String
     */
    StringTemplateTypeEnum[] type() default {};

    @Getter
    @AllArgsConstructor
    enum StringTemplateTypeEnum {
        /**
         * 填充类型
         */
        INT("int"),

        STRING("String");
        private final String typeName;
    }
}
